
//文档加载事件
$(function (){

    /**
     * 切换全选 
     */
    $('.allsel').on('change', function (){
        //获取当前全选按钮的选中状态值
        let bool = $(this).prop('checked')

        //将bool值赋值给其他商品的选中状态
        $('.sinsel, .allsel').prop('checked', bool)

        //总计
        allTotal()
    
    })


    /**
     * 取消全选
     */
    $('.sinsel').on('change', function (){

        //获取总商品个数
        let allLen = $('.sinsel').length

        //获取选中商品的个数
        let checkLen = $('.sinsel:checked').length

        //判断
        $('.allsel').prop('checked', !(checkLen < allLen) ) 

        //总计
        allTotal()
       
    /*         
    //1. 定义标杆
        let flag = true;//true:所有选中 false:至少一个没有选中

        //2. 决定标杆的最终值
        //获取每个商品的选中状态值 - 必须要遍历
        $('.sinsel').each(function (index, item){
            let bool = $(item).prop('checked')
            
            //只判断没有选中的情况
            if( !bool ){
                flag = false;

                //结束循环
                return;
            }
        })

        //3. 根据标杆的最终值, 决定是否选中全选
        $('.allsel').prop('checked', flag) 
    */

    })


    /**
     * 增加商品数量
     */
    $('.add').on('click', function (){
        //增加当前商品的数量
        let num = $(this).siblings('.pronum').val()// 1 string

        //赋值
        $(this).siblings('.pronum').val( ++num )

        //小计
        subtotal(this, num)

        //总计
        allTotal()

    })



    /**
     * 减小商品数量
     */
    $('.reduce').on('click', function (){
        //增加当前商品的数量
        let num = $(this).siblings('.pronum').val()// 1 string

        //判断
        if( num <= 1) return

        //赋值
        $(this).siblings('.pronum').val( --num )


        //小计
        subtotal(this, num)

        //总计
        allTotal()

    })


    /**
     * 小计
     */
    function subtotal(obj, snum){

        //计算当前商品小计
        let sPrice = snum * $(obj).closest('.shopcar-body').find('.sinprice').text()

        //赋值
        $(obj).closest('.shopcar-body').find('.smallprice').text( sPrice.toFixed(2) )
    }

    /**
     * 总计 - 计算选中商品的总价和总数量
     */
    function allTotal(){

        //定义变量保存总价
        let allPrice = 0;

        //定义变量保存总数量
        let allNum = 0;

        //获取选中商品
        $('.sinsel:checked').each(function (index, item){

            //获取每个商品的小计
            let sPrice = Number( $(item).closest('.shopcar-body').find('.smallprice').text() )
            
            //累加总价
            allPrice += sPrice


            //获取每个商品的数量
            let sNum = Number( $(item).closest('.shopcar-body').find('.pronum').val() )
            
            //累加总数量
            allNum += sNum;

        })

        //得到总价并渲染到页面中
        $('.allPrice').text( allPrice.toFixed(2) )

        //得到总数量并渲染到页面中
        $('.allNum').text(allNum)

    }
})